#define _CRT_SECURE_NO_WARNINGS 1
class Solution {
public:
    vector<string> ret;
    vector<string> letterCasePermutation(string s) {
        dfs(s, 0);
        return ret;
    }
    void dfs(string s, int pos)
    {
        if (pos == s.size())
        {
            ret.push_back(s);
            return;
        }

        if (s[pos] >= 'a' && s[pos] <= 'z')
        {
            dfs(s, pos + 1);
            s[pos] -= 32;
            dfs(s, pos + 1);
        }
        else if (s[pos] >= 'A' && s[pos] <= 'Z')
        {
            dfs(s, pos + 1);
            s[pos] += 32;
            dfs(s, pos + 1);
        }
        else dfs(s, pos + 1);
    }
};